package com.cskaoyan.javase.oop1._6constructor;

/**
 * 总结一下目前为止,创建对象过程中,给成员变量的赋值方式:
 *      1.默认初始化具有默认值
 *      2.显式赋值
 *      3.构造器赋值
 * 我们后面还会学习其它赋值方式,但不管有多少赋值方式,原则上都是"掐头去尾"
 * 头是: 默认初始化具有默认值,永远最先进行
 * 尾是: 构造器赋值,永远最后执行
 *
 * 学习成员变量的赋值方式和赋值顺序,最好的方式是用debug模式
 *
 * 创建对象的过程:
 *      1.找到new对象的构造器,但是不会立刻执行构造器代码
 *      2.而是开始按照代码书写顺序,从上到下依次完成成员变量的显式赋值
 *
 *      3.显式赋值结束后,才开始构造器代码执行
 *      4.new对象的构造器执行完毕后,创建对象结束
 *
 * @since 16:27
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        Phone p = new Phone(3999, "小米11", "小米");
        System.out.println(p.brand);
        System.out.println(p.name);
        System.out.println(p.price);
    }
}

class Phone {

    // 用快捷键写构造器
    public Phone(double price, String name, String brand) {
        this.price = price;
        this.name = name;
        this.brand = brand;
    }

    double price = 8848;
    String name = "iPhone13 Pro";
    String brand = "苹果";



    public Phone() {
    }
}